package com.liziba.trend;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NetUtil;
import org.apache.commons.lang.math.NumberUtils;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;

/**
 * @ProjectName: trend-parent
 * @Package: com.liziba.trend
 * @ClassName: IndexGatherStoreApplication_8001
 * @Author: liziba
 * @Description: 数据采集与存储
 * @Date: 2021/2/1 16:51
 * @Version: 1.0
 */
@SpringBootApplication
@EnableEurekaClient
// 开启断路器
@EnableHystrix
@EnableCaching
public class IndexGatherStoreApplication_8001 {
    public static void main(String[] args) {
        // 当前服务端口
        int port = 8001;
//        // eureka server 端口
//        int eurekaServerPort = 8761;
//        // redis 端口
//        int redisServerPort = 6379;
//        // 判断eureka是否启动
//        if(NetUtil.isUsableLocalPort(eurekaServerPort)) {
//            System.err.printf("检查到eurekaServerPort端口%d未启动，本地服务无法注册，强制退出！", eurekaServerPort);
//            System.exit(1);
//        }
//        // 判断redis端口是否启动
//        if(NetUtil.isUsableLocalPort(redisServerPort)){
//            System.err.printf("检查到redisServerPort端口%d未启动，本地服务无法使用redis，强制退出！", redisServerPort);
//            System.exit(1);
//        }
//        // 启动时携带参数启动 支持修改端口 未携带参数则默认使用8090端口
//        if(null != args && args.length > 0){
//            String p = Arrays.asList(args).stream().filter(arg -> (arg.startsWith("port="))).findFirst().get();
//            port = NumberUtils.isNumber(p) ? Convert.toInt(p) : 8001;
//        }
//        // 判断端口是否被占用
//        if(!NetUtil.isUsableLocalPort(port)) {
//            System.err.printf("端口%d已被占用，无法启动！", port);
//            System.exit(1);
//        }
        new SpringApplicationBuilder(IndexGatherStoreApplication_8001.class).properties("server.port=" + port).run(args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
